﻿/**
 * 一共有N个任务，完成第i个任务的前提是所有比i小的任务都要完成。
 * 第一次完成任务i得到Ai分数，以后每次完成得到Bi分数
 * 问恰好做K个任务的最大得分是多少
 * 对每个i，求出只做到任务i的最大得分
 * 该得分是 SIGMA{A1到Ai} + (K - i) * max(B1到Bi)
 * 最大的即答案，O(N)
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using llt = long long;
using pii = pair<int, int>;
using vi = vector<int>;
using vvi = vector<vi>;

int N, K;
vi A, B;

llt proc(){
    llt ans = 0;
    int large = 0;
    llt pre = 0;
    for(int i=0;i<N;++i){
        large = max(large, B[i]);
        pre += A[i];
        if(K - i - 1 >= 0){
            llt tmp = pre + large * (K - i - 1LL);
            ans = max(ans, tmp);            
        }else{
            break;
        }
    }
    return ans;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    cin >> nofkase;
    while(nofkase--){
        cin >> N >> K;
        A.assign(N, 0);
        B.assign(N, 0);
        for(auto & i : A) cin >> i;
        for(auto & i : B) cin >> i;
        cout << proc() << endl;
    }
    return 0;
}